package main

import "fmt"

func factorial(n int) int {
	result := 1
	for i := 1; i <= n; i++ {
		result *= i
	}
	return result
}

func factorialRecursive(n int) int {
	if n == 0 {
		return 1
	}
	return n * factorialRecursive(n-1)
}

func triangle(n int) {
	for i := 1; i <= n; i++ {
		for t := n - i; t > 0; t-- {
			fmt.Print("   ")
		}
		for j := i; j > 0; j-- {
			fmt.Printf("%3d", j)
		}
		fmt.Println()
	}
}

func main() {
	//1、求n的阶乘。至少使用递归函数完成一次。
	fmt.Println(factorial(1))
	fmt.Println(factorialRecursive(5))

	/*2、编写一个函数，接受一个参数n，n为正整数。要求数字必须对齐
			  						 1
			  					   2 1
			  					 3 2 1
			  				   4 3 2 1
			  				 5 4 3 2 1
			  			   6 5 4 3 2 1
			  			 7 6 5 4 3 2 1
			  		   8 7 6 5 4 3 2 1
			  	 	 9 8 7 6 5 4 3 2 1
			  	  10 9 8 7 6 5 4 3 2 1
			   11 10 9 8 7 6 5 4 3 2 1
	    	12 11 10 9 8 7 6 5 4 3 2 1
	*/
	triangle(12)
}


// 批改意见
// 1. 阶乘中试着增加一下n<0时的处理逻辑